<?php
require_once("../dao/database.php");
require_once('../domain/User.php');
require_once('../util/main.php');
require_once("../util/Validation.php");
require_once("../dao/user_db.php");
require_once("../email/MailService.php");




$val = new Validation();
$infoMessage = '';

if (isset($_POST['submit'])) {   
    /*
     * Validation Statigie mit command pattern hinzufügen.
     */
    
    // Profildaten aus $_POST auslesen
    $vorname = $val->validateRequiredString('vorname', "Der Vorname ist ein Pflichtfeld.");
    $nachname =     $val->validateRequiredString('nachname', "Der Nachname ist ein Pflichtfeld.");
    $plz =     $val->validateRequiredString('plz', "Die Postleitzahl ist ein Pflichtfeld.");
    $ort =     $val->validateRequiredString('ort', "Der Ort ist ein Pflichtfeld.");
    $strasse =     $val->validateRequiredString('strasse', "Die Straße ist ein Pflichtfeld.");
    $geschlecht =     $val->validateRequiredString('geschlecht', "Das Geschlecht ist ein Pflichtfeld.");
    $alter = $val->validateAge('alter', "Die Geburtsjahr ist ein Pflichtfeld.");
    $email =     $val->validateRequiredString('email', "Die E-Mail Adresse ist ein Pflichtfeld.");
    $email2 =     $val->validateRequiredString('email2', "Die E-Mail Adresse (Wiederholung) ist ein Pflichtfeld.");
    $nickname =     $val->validateRequiredString('nickname', "Der Nickname ist ein Pflichtfeld.");
    $password =     $val->validateRequiredString('password', "Das Passwort ist ein Pflichtfeld.");
    $password2 =     $val->validateRequiredString('password2', "Das Passwort (Wiederholung) ist ein Pflichtfeld.");
    $newsletter =  (string) $val->validateRequiredBoolean('newsletter', "Entscheidung für den Newsletter ist ein Pflichtfeld.");
   
    $val->compairString($password, $password2, '\'Passwort\'', '\'Passwort (Wiederholung)\'');
    $val->compairString($email, $email2, '\'E-Mail Adresse\'', '\'E-Mail Adresse (Wiederholung)\'');
    
    $val->valid_email($email,'Das E-Mail Format stimmt nicht!');

    $fehler = 0;

    // Die Profildaten in der Datenbank aktualisieren
    if (!$val->isError()) {

        //validierung email schon vorhanden.
//        if (! isEMailUnique($email)){
//            $error_message = 'Die E-Mail Adresse wurde bereits verwendet!';
//            include('../errors/error.php');
//            exit();
//            $val->addError('Die E-Mail Adresse wurde bereits verwendet!');
//        }
        //validierung email schon vorhanden.
        if (! isNicknameUnique($nickname)){
            $val->addError('Der Username (Nickname) wurde bereits verwendet!');
        }

        if (!$val->isError()) {
            //id wert für email
            $initial_value = sha1( uniqid() );  // 40 characters long;

            $password = hash( 'sha256', $password );


            //write DB
            insert_user($alter, $nickname, $ort, $strasse, $initial_value, $geschlecht,  
                    $nachname, $password, $vorname, $plz, $email, $newsletter);

            //send Email
            try {
                $mailService = new MailService();
                $mailService->sendRegistrationEmail($email, $nickname, $initial_value);
            } catch (Exception $e) {
                $error_message = 'Es tratt ein Fehler beim Versenden der Registrierungs E-Mail auf!';
                include('../errors/error.php');
                exit();
            }   

            $infoMessage = 'Ihr Profile wurde erfolgreich angelegt.';

            include('successUserCreate.php');
        } else {
            include('registerUserView.php');
        }
        //exit();
    } else {
            include('registerUserView.php');
    }
} // Ende Prüfung auf übermitteltes Formular
else {
    include('registerUserView.php');
}

?>
